package com.hsurosy.domain.strategy.service.rule.chain;

/**
 * @Author Hsu琛君珩
 * @Date 2024-10-19 1:14
 * @Description 抽象责任链节点类
 * @Version: v1.0.0
 */
public abstract class AbstractLogicChain implements ILogicChain {

    // 保存下一个责任链节点
    private ILogicChain next;

    /**
     * 追加下一个责任链节点
     *
     * @param next 下一个责任链中的逻辑处理节点
     * @return 返回下一个责任链节点，以支持链式调用
     */
    @Override
    public ILogicChain appendNext(ILogicChain next) {
        this.next = next;
        return next;
    }

    /**
     * 获取下一个责任链节点
     *
     * @return 下一个责任链节点，如果没有下一个节点则返回 null
     */
    @Override
    public ILogicChain next() {
        return next;
    }

    /**
     * 抽象方法：返回当前节点的规则模型
     *
     * @return 规则模型的标识
     */
    protected abstract String ruleModel();

}
